#!/bin/sh
#
# DracoPKG
#
# Copyright 2008 Ole Andre Rodlie <olear@dracolinux.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

function dP_sysinst () {
  dP_input ${1}
  INPUT=${1}
  if [ -a ${DRACOSRC_CACHE}/FILELIST.TXT ]; then
  PKG_REMOTE_EXISTS=`cat ${DRACOSRC_CACHE}/FILELIST.TXT | sed '/.\/testing/d;/.\/pasture/d' | sed '/\/'${INPUT}'-[0-9]/!d' | awk '{print $8}' | sed 's#/# #g;s#.tgz##g' | awk '{print $3}'`
  if [ "${PKG_REMOTE_EXISTS}" ]; then  
    PKG_LOCAL_EXISTS=`( cd ${DRACOSRC_LOG} ; ls | sed '/'${PKG_REMOTE_EXISTS}'/!d')`
    if [ ! "${PKG_LOCAL_EXISTS}" ]; then
      if [ -a "${DRACOSRC_CACHE}/${PKG_REMOTE_EXISTS}.tgz" ]; then
        ${PKGTOOLS_UPGRADE} --install-new ${DRACOSRC_CACHE}/${PKG_REMOTE_EXISTS}.tgz
      else
        PKG_URL=`cat ${DRACOSRC_CACHE}/FILELIST.TXT | sed '/'${PKG_REMOTE_EXISTS}'/!d' | awk '{print $8}' | sed 's#./##'`
        ( cd ${DRACOSRC_CACHE} ; ${GET} ${MIRROR}/draco-${VERSION}/draco/${PKG_URL} )
        if [ -a ${DRACOSRC_CACHE}/${PKG_REMOTE_EXISTS}.tgz ]; then
          ${PKGTOOLS_UPGRADE} --install-new ${DRACOSRC_CACHE}/${PKG_REMOTE_EXISTS}.tgz
        else
          echo "Package corrupt or failed to download."
          echo
          exit 1
        fi
      fi
    else
      echo "Package already installed."
      echo
      exit 1
    fi
  else
    echo "Package not found in package list" 
    echo -n "Checking for local package... "
    PKG_CHECK_LOCAL=`ls ${DRACOSRC_LOG} | sed '/'${INPUT}'-[0-9]/!d'`
    if [ "${PKG_CHECK_LOCAL}" ]; then
      echo "ok (${PKG_CHECK_LOCAL})"
    else
      echo "no"
    fi
    echo -n "Checking source ... "
    if [ -x ${SHARE}/src/${INPUT}/Build ]; then
      echo "yes"
      . ${SHARE}/src/${INPUT}/Build
      if [ ! "${DRACOSRC_PKG_NAME}-${DRACOSRC_PKG_VERSION}-${DRACOSRC_ARCH}-${DRACOSRC_TAG}${DRACOSRC_PKG_BUILD}" = "${PKG_CHECK_LOCAL}" ]; then
      echo "Package not in sync with source."
      sleep 2
      dP_sysbuild ${INPUT}
      else
        echo "Package in sync with source."
      fi
    else
      echo "no"
    fi
    exit 1
  fi

  else
    echo
    echo "Package list not found."
    echo "Please run '${DPN} audit update'."
    echo
    exit 1
  fi
}